package canal.demo.handler;

import canal.demo.po.CanalStationPO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import top.javatool.canal.client.annotation.CanalTable;
import top.javatool.canal.client.handler.EntryHandler;

/**
 * 针对charging_station表格的变动 处理CUD
 */
@Component
@CanalTable("charging_station")
@Slf4j
public class StationHandler implements EntryHandler<CanalStationPO> {
    //覆盖接口的三种实现方法 insert update delete

    /**
     * 数据库charging station表格新增 入参就是新增表格数据
     * @param canalStationPO
     */
    @Override
    public void insert(CanalStationPO canalStationPO) {
        //缓存一致性,数据组织一下放到geo一个id 放到string一个key-value
        log.info("新增charging_station表格数据:{}",canalStationPO);
        EntryHandler.super.insert(canalStationPO);
    }

    /**
     * 删除charging station表格数据 入参删除之前的station对象数据
     * @param canalStationPO
     */
    @Override
    public void delete(CanalStationPO canalStationPO) {
        log.info("删除charging_station表格数据:{}",canalStationPO);
        EntryHandler.super.delete(canalStationPO);
    }

    /**
     * 如果对charging station做更新操作
     * @param before 更新之前的数据(所有字段非空)
     * @param after 更新变动的字段非空(其他没变的数据都是空属性)
     */
    @Override
    public void update(CanalStationPO before, CanalStationPO after) {
        log.info("更新charging_station表格数据,更新前:{},更新后:{}",before,after);
        EntryHandler.super.update(before, after);
    }
}
